iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Software Development

Java基礎筆記系列 第 17

Java的抽象Abstract

  • 分享至 

  • xImage
  •  

抽象

Java抽象的概念,分別有抽象類別以及抽象方法;其中的關聯是,若該類別擁有抽象方法,就必須宣告為抽象類別(加上abstract)。抽象類別的用途是,當類別建立若尚未決定其內容主體,此時宣告成抽象方法,後續就能尤其子類別實作。這常用於父類別設計之時。

public abstract class MyClass {     //抽象類別
    public abstractor void myMethod(); //抽象方法
}

抽象類別

  • 抽象類別必須透過子類別產生實體,無法自行使用new實體物件。子類別必須實作父類別所有抽象方法,使用繼承,同Override方式,才能產生實體。
  • 抽象類別可以包含普通(有實作內容)的方法,以及抽象方法;一但有抽象方法,其類別就必須宣告為抽象類別。
  • 抽象類別仍可建立建構子,執行一些初始化設定,於子類別實體化時被呼叫使用。

抽象方法

  • 沒有實作內容的方法,只有方法名,沒有{}及其方法體。
  • 當子類別繼承父類別時,必須實作父類別的所有抽象方法,否則自己也必須成為抽象類別。
  • 抽象方法只能定義在抽象類別的{ }之中。
  • 封裝層級不能夠是private。

補充:抽象類別雖然沒有辦法實體化,但仍可包含靜態方法及mail方法,在不被實體化的狀況下被呼叫使用。

抽象的使用例子

public abstract class Animal{ //抽象類別
    private String name;
    
    public Animal(String name){
        this.name = name;
    }
    
    public abstract void makeSound(); //抽象方法
    
    public String getName(){ //一般方法
        return name;
    }
}

public class Dog extends Animal { //狗狗子類別
    public Dog(String name){ 
        super(name);
    }
    @Override
    public void makeSound(){ //覆寫抽象方法
        System.out.println("Woof!");
    }
}

public class Cat extends Animal { //貓咪子類別
    public Cat(String name){
        super(name);
    }
    @Override
    public void makeSound(){
        System.out.println("唷咪~~");
    }
}

public class Main{
    public static void main(String[] args){
        Animal dog = new Dog("小白"); 
        Animal cat = new Cat("小花");
        
        System.out.println(dog.getName()+"says:"+dog.makeSound());
        System.out.println(cat.getName()+"says:"+cat.makeSound());
        
        //Dog、Cat為Animal子類別,故可使用父類別變數dog、cat指向子類別Dog、Cat。屬於多型的應用 。
    
    }

}

上一篇
Java的Override與Overload
下一篇
Java的介面Interface
系列文
Java基礎筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言